#ifndef DW_GRAPHICS_PARTICLESYSTEM_H
# define DW_GRAPHICS_PARTICLESYSTEM_H

#	include	"object.h"

namespace dw
{
	namespace graphics
	{

		class IParticleEmitter;

		int clamped_random(int min_val, int max_val);

		class ParticleSystem
		{
		// Constructors
		public:
			
			ParticleSystem();
			
			~ParticleSystem();

		// Methods
		public:

			void update(const float&);

			bool addEmitter(IParticleEmitter * emitter);
			
			IParticleEmitter *					getEmitter(const std::string & name) const ;
			
			void removeEmitter(const std::string & name);
			
			const unsigned getNumParticles();

			void render(Renderer * renderer) const ;

		// Fields
		private:

			std::vector< IParticleEmitter* >	_emitters;
			//vector< IParticleDeflector* >	_deflectors;

		};

	} // namespace graphics
} // namespace dw

#endif // !DW_GRAPHICS_PARTICLESYSTEM_H